import router from "./index"

import { useMenuStore } from '@/stores/menu'
import { useTokenStore } from "@/stores/token"


// 设置路由白名单
const whiteRouter = ['/login','/error','/404']


// 全局前置路由守卫， 路由挂载， 名单过滤
router.beforeEach((to, from, next) =>{
     const menuStore = useMenuStore()
    // 判断 to 是否处于白名单
    if(whiteRouter.indexOf(to.path) == -1) {
        console.log("no white route to path", to.path)
        const tokenStore = useTokenStore()
        // 是否登录
        if (!tokenStore.isLogin()) {
            next('/login')
        } else {
            console.log("menuStore.routerList.length:", menuStore.routerList.length)
            // 判断routerList中是否有动态路由的数据
            if(menuStore.routerList.length == 0) {
                // 设置动态路由数据结构，并且添加到路由中
                console.log('loading router-----------------------------')
                menuStore.generateRouterAndMenu().then(() => {
                    // 跳转页面
                    next({...to,replace: true})
                })
            }else {
                // 情况1：路由的路径是合法的，正常的
                if(to.matched.length != 0) {
                    next();
                }else {
                    // 情况2：路由的页面并没有
                    next('/404');
                }
            }
        }
    }else {
        // 直接放行
        next()
    }

})